home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Browsers, Managers & Extensions / Adblock Plus 0.7.5.5 / adblock_plus-0.7.5.5-fx+tb+sm.xpi / install.js < prev    next >
Text File  |  2008-06-17  |  5KB  |  156 lines

  1. // constants
  2. const APP_DISPLAY_NAME = "Adblock Plus";
  3. const APP_NAME = "adblockplus";
  4. const APP_PACKAGE = "/adblockplus.mozdev.org";
  5. const APP_VERSION = "0.7.5.5";
  6. const WARNING = "WARNING: You need administrator privileges to install Adblock Plus. It will be installed in the application directory for all users. Installing Adblock Plus in your profile is currently not supported in SeaMonkey. Proceed with the installation?";
  7. const VERSION_ERROR = "This extension can only be installed in a browser based on Gecko 1.8 or higher, please upgrade your browser. Compatible browsers include Firefox 1.5, SeaMonkey 1.0 and Flock 0.5.";
  8. const NOT_WRITABLE_ERROR = "This extension requires write access to the application directory to install properly. Currently write access to some of the relevant subdirectories is forbidden, you probably have to log in as root before installing. After installation no elevated privileges will be necessary, read access is sufficient to use Adblock Plus."
  9. const locales = [
  10.     "en-US",
  11.     "ar",
  12.     "ca-AD",
  13.     "cs-CZ",
  14.     "da-DK",
  15.     "de-DE",
  16.     "el-GR",
  17.     "en-GB",
  18.     "es-ES",
  19.     "et-EE",
  20.     "fa-IR",
  21.     "fi-FI",
  22.     "fr-FR",
  23.     "fy-NL",
  24.     "he-IL",
  25.     "hr-HR",
  26.     "hu-HU",
  27.     "it-IT",
  28.     "ja-JP",
  29.     "ko-KR",
  30.     "lt-LT",
  31.     "mn-MN",
  32.     "ms-MY",
  33.     "nb-NO",
  34.     "nl-NL",
  35.     "pl-PL",
  36.     "pt-BR",
  37.     "pt-PT",
  38.     "ro-RO",
  39.     "ru-RU",
  40.     "sk-SK",
  41.     "sl-SI",
  42.     "sv-SE",
  43.     "th-TH",
  44.     "tr-TR",
  45.     "uk-UA",
  46.     "vi-VN",
  47.     "zh-CN",
  48.     "zh-TW",
  49.     null
  50. ];
  51.  
  52. // Gecko 1.7 doesn't support custom button labels
  53. var incompatible = (typeof Install.BUTTON_POS_0 == "undefined");
  54. if (incompatible)
  55.     alert(VERSION_ERROR);
  56.  
  57. if (!incompatible) {
  58.     // Check whether all directories can be accessed
  59.     var jarFolder = getFolder("Chrome");
  60.     var dirList = [
  61.         jarFolder,
  62.         getFolder("Components"),
  63.         getFolder(getFolder("Program", "defaults"), "pref")
  64.     ];
  65.     for (var i = 0; i < dirList.length; i++)
  66.         if (!File.isWritable(dirList[i]))
  67.             incompatible = true;
  68.  
  69.     if (incompatible)
  70.         alert(NOT_WRITABLE_ERROR);
  71. }
  72.  
  73. if (!incompatible && confirm(WARNING, APP_DISPLAY_NAME)) {
  74.     /* Pre-Install Cleanup (for prior versions) */
  75.     
  76.     // List of files to be checked
  77.     var checkFiles = [
  78.         [getFolder("Profile", "chrome"), "adblockplus.jar"],      // Profile jar
  79.         [getFolder("Chrome"), "adblockplus.jar"],                 // Root jar
  80.         [getFolder("Components"), "nsAdblockPlus.js"],            // Root component
  81.         [getFolder("Components"), "nsAdblockPlus.xpt"],           // Component interface
  82.         [getFolder("Profile", "components"), "nsAdblockPlus.js"], // Profile component
  83.         [getFolder("Profile"), "XUL FastLoad File"],              // XUL cache Mac Classic
  84.         [getFolder("Profile"), "XUL.mfast"],                      // XUL cache MacOS X
  85.         [getFolder("Profile"), "XUL.mfasl"],                      // XUL cache Linux
  86.         [getFolder("Profile"), "XUL.mfl"]                         // XUL cache Windows
  87.     ];
  88.  
  89.     // Remove any existing files
  90.     initInstall("pre-install", "/rename", "0.0");  // open dummy-install
  91.     for (var i = 0 ; i < checkFiles.length ; i++) {
  92.         var currentDir = checkFiles[i][0];
  93.         var name = checkFiles[i][1];
  94.         var oldFile = getFolder(currentDir, name);
  95.  
  96.         // Find a name to rename the file into
  97.         var newName = name + "-uninstalled";
  98.         for (var n = 1; File.exists(oldFile) && File.exists(getFolder(currentDir, newName)); n++)
  99.             newName = name + n + "-uninstalled";
  100.     
  101.         if (File.exists(oldFile))
  102.             File.rename(oldFile, newName);
  103.     }
  104.     performInstall(); // commit renamed files
  105.  
  106.     /* Main part of the installation */
  107.  
  108.     var chromeType = DELAYED_CHROME;
  109.  
  110.     var files = [
  111.         ["chrome/adblockplus.jar", jarFolder],
  112.         ["components/nsAdblockPlus.js", getFolder("Components")],
  113.         ["components/nsAdblockPlus.xpt", getFolder("Components")],
  114.         ["defaults/preferences/adblockplus.js", getFolder(getFolder("Program", "defaults"), "pref")],
  115.     ];
  116.     
  117.     // initialize our install
  118.     initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);
  119.     
  120.     // Add files
  121.     for (var i = 0; i < files.length; i++)
  122.         addFile(APP_NAME, APP_VERSION, files[i][0], files[i][1], null);
  123.  
  124.     var jar = getFolder(jarFolder, "adblockplus.jar");
  125.     try {
  126.         var err = registerChrome(CONTENT | chromeType, jar, "content/");
  127.         if (err != SUCCESS)
  128.             throw "Chrome registration for content failed (error code " + err + ").";
  129.  
  130.         err = registerChrome(SKIN | chromeType, jar, "skin/classic/");
  131.         if (err != SUCCESS)
  132.             throw "Chrome registration for skin failed (error code " + err + ").";
  133.  
  134.         for (i = 0; i < locales.length; i++) {
  135.             if (!locales[i])
  136.                 continue;
  137.  
  138.             err = registerChrome(LOCALE | chromeType, jar, "locale/" + locales[i] + "/");
  139.             if (err != SUCCESS)
  140.                 throw "Chrome registration for " + locales[i] + " locale failed (error code " + err + ").";
  141.         }
  142.  
  143.         var err = performInstall();
  144.         if (err != SUCCESS && err != 999)
  145.             throw "Committing installation failed (error code " + err + ").";
  146.  
  147.         alert("Adblock Plus " + APP_VERSION + " is now installed.\n" +
  148.                     "It will become active after you restart your browser.");
  149.     }
  150.     catch (ex) {
  151.         alert("Installation failed: " + ex + "\n" +
  152.                     "You probably don't have the necessary permissions (log in as system administrator).");
  153.         cancelInstall(err);
  154.     } 
  155. }
  156.